.. _cmsHomeMoveAllStart: cmsHomeMoveAllStart ================================ -------------------------------- SYNOPSYS ````````````` .. code-block:: none VT_I4 cmsHomeMoveAllStart([in] VT_I4 BoardID, [in] VT_I4 NumAxes, [in] VT_PI4 AxisList) DESCRIPTION ````````````` - 여러 ì¶•ì— ëŒ€í•œ ì›ì 복귀 ìž‘ì—…ì„ ë™ì‹œì— 수행합니다. cmsHomeMoveAll() 함수는 ëª¨ì…˜ì´ ì™„ë£Œë˜ê¸° ì „ê¹Œì§€ 반환ë˜ì§€ 않으며, cmsHomeMoveAllStart() 함수는 ëª¨ì…˜ì„ ì‹œìž‘ì‹œí‚¨ í›„ì— ë°”ë¡œ 반환ë©ë‹ˆë‹¤. \ - ì´ í•¨ìˆ˜ì˜ ì‚¬ìš©ê³¼ í˜¸ì¶œì— ìžˆì–´, ì œê³µëœ ãˆœì»¤ë¯¸ì¡°ì•„ì˜ í•¨ìˆ˜ í—¤ë” Visual Basic ì—서는 í•¨ìˆ˜ì˜ ì²¨ë‘ì–´ cms ê°€ 붙지 않습니다. PARAMETER ````````````` â–¶ BoardId: 사용ìžê°€ ì„¤ì •í•œ 디바ì´ìŠ¤(ë³´ë“œ) ID. â–¶ NumAxes : ë™ì‹œì— ìž‘ì—…ì„ ìˆ˜í–‰í• ëŒ€ìƒ ì¶•ì˜ ìˆ˜ â–¶ AxisList : ë™ì‹œì— ìž‘ì—…ì„ ìˆ˜í–‰í• ëŒ€ìƒ ì¶•ì˜ ë°°ì—´ 주소값. ì´ ë°°ì—´ì˜ í¬ê¸°ëŠ” NumAxesê°’ê³¼ ì¼ì¹˜í•˜ê±°ë‚˜ 커야 합니다. â–¶ IsBlocking : 완료ë 때까지 기다리는 ë™ì•ˆ 윈ë„ìš° 메시지를 블ë¡(Blocking)í• ê²ƒì¸ì§€ë¥¼ ê²°ì •í•©ë‹ˆë‹¤. .. csv-table:: :widths: 10 90 :header-rows: 1 :stub-columns: 0 Value, Meaning "| 0 ë˜ëŠ” cmsFALSE", " | 블ë¡(Blocking)ì„ í•˜ì§€ 않습니다. ë”°ë¼ì„œ 해당 ëª¨ì…˜ì´ | 완료ë˜ëŠ” ë™ì•ˆì—ë„ ìœˆë„ìš° ì´ë²¤íŠ¸ë¥¼ 처리합니다." "| 1 ë˜ëŠ” cmsTRUE"," | 블ë¡(Blocking)ì„ í•©ë‹ˆë‹¤. ë”°ë¼ì„œ 해당 ëª¨ì…˜ì´ ì™„ë£Œë˜ëŠ” | ë™ì•ˆì—는 윈ë„ìš° ì´ë²¤íŠ¸ê°€ 처리ë˜ì§€ 않습니다." RETURN VALUE ````````````` +------------+-----------+ | Value | Meaning | +============+===========+ | ìŒìˆ˜ | 수행 실패 | +------------+-----------+ | ERR_NONE | 수행 성공 | +------------+-----------+ REFERENCE ``````````````` - cmsHomeMoveAllStart() 함수를 사용하는 경우ì—는 cmsMxIsDone() 함수나 MxWaitDone() 함수를 사용하여 ëª¨ì…˜ì˜ ì™„ë£Œë¥¼ 확ì¸(確èª)í• ìˆ˜ 있습니다. \ - cmsHomeMoveAll() 함수를 사용하는 경우ì—는 내부ì 으로 루프를 수행하면서 ëª¨ì…˜ì´ ì™„ë£Œë˜ê¸°ë¥¼ 기다리는ë°, ì´ë•Œ “Blocking Modeâ€ì˜ ì „ë‹¬ ì¸ìžê°’ì— ë”°ë¼ ìœˆë„ìš° ì´ë²¤íŠ¸ë¥¼ 처리하는 ë°©ì‹ì´ 달ë¼ì§‘니다. \ - INP ìž…ë ¥ì‹ í˜¸ê°€ Enableë¡œ ì„¤ì •ë˜ì—ˆìœ¼ë©´ Command 펄스 ì¶œë ¥ì´ ì™„ë£Œë˜ì–´ë„ INP ìž…ë ¥ì´ ONì´ ë˜ê¸° ì „ê¹Œì§€ëŠ” ëª¨ì…˜ì´ ì™„ë£Œë˜ì§€ ì•Šì€ ê²ƒìœ¼ë¡œ 간주ë˜ì–´ 반환ë˜ì§€ 않습니다. .. note:: "윈ë„ìš° ì´ë²¤íŠ¸ëž€ëŠ ê²ƒì€ ë¬´ì—‡ìž…ë‹ˆê¹Œ?" 윈ë„ìš° ìš´ì˜ì²´ì œëŠ” Event Driven í˜¹ì€ Message Driven ë°©ì‹ì˜ 구조로 ë˜ì–´ 있습니다. ê° ì‘ìš©í”„ë¡œê·¸ëž¨ì€ ë©”ì‹œì§€ í(Queue)를 ê°€ì§€ê³ ìžˆìœ¼ë©°, ì •í™•ížˆ ë§í•˜ë©´, 메시지를 사용해 ì´ë²¤íŠ¸ë¥¼ 통지하는 ë°©ì‹ìœ¼ë¡œ 설계ë˜ì–´ 있습니다. 윈ë„ìš° 메시지를 처리한다는 ê²ƒì€ ë©”ì‹œì§€ íì—ì„œ 메시지를 하나씩 꺼내서 윈ë„ìš° í”„ë¡œì‹œì €ì— ì „ì†¡í•œë‹¤ëŠ” ê²ƒì„ ì˜ë¯¸í•˜ë©°, ì´ê²ƒì€ ê·¸ í–‰ì„ ì§€ê°€ ë˜ëŠ” 윈ë„ìš°ì— ì „ì†¡ë˜ì–´ 처리ë©ë‹ˆë‹¤. EXAMPLE ``````````` - 본 ì˜ˆì œëŠ” cmsHomeMoveAll() 함수를 ì´ìš©í•˜ì—¬ X1, Y1 ì¶•ì˜ ì›ì 복귀를 ë™ì‹œì— 수행하는 함수입니다. .. code-block:: c++ :linenos: :emphasize-lines: 5 C/C++ #Define DEV0 0 #include "ComiSSCNET3_SDK.h" #include "ComiSSCNET3_SDK_Def.h" /*************************************************************** * OnHomeSetSpeed : ì´ í•¨ìˆ˜ëŠ” ì†ë„ì„¤ì •ì˜ ë³€ê²½ì´ í•„ìš”í• ë•Œ * 호출ë˜ëŠ” ê°€ìƒì˜ 함수 입니다. ì´ë•Œ m_fVwork, m_fAcc, m_fDec 변수를 * 통하여 ì†ë„, ê°€ì†ë„ , ê°ì†ë„ ê°’ì´ ì ì ˆí•˜ê²Œ ì „ë‹¬ëœë‹¤ê³ ê°€ì •í•©ë‹ˆë‹¤. **************************************************************/ void OnHomeSetSpeed() { //ê° ì¶•(Axis)ì˜ ê¸°ë³¸ ì†ë„를 ì„¤ì • 합니다. //X1ì¶•ì˜ í™ˆë³µê·€ 모드를 ì„¤ì •í•©ë‹ˆë‹¤. cmsHomeSetConfig(DEV0, 0, 0, 1, 100, 10); //Y1ì¶•ì˜ í™ˆë³µê·€ 모드를 ì„¤ì •í•©ë‹ˆë‹¤. cmsHomeSetConfig(DEV0, cmsY1, 0, 1, 100, 10); // X1축 홈복귀 ì†ë„패턴 ì„¤ì • // cmsHomeSetSpeedPattern(DEV0, 0, cmsSMODE_S, m_fVwork, m_fAcc, m_fDec, m_fRevVel ); // Y1축 홈복귀 ì†ë„패턴 ì„¤ì • // cmsHomeSetSpeedPattern(DEV0, cmsY1, cmsSMODE_S, m_fVwork, m_fAcc, m_fDec, m_fRevVel ); } /*************************************************************** * OnHomeReturn : ì´ í•¨ìˆ˜ëŠ” ê°€ìƒì˜ 함수로서 ì›ì 복귀를 실행합니다. **************************************************************/ void OnHomeReturn() { long nAxes[2] = {0, cmsY1}; long nDirList[2] = {cmsDIR_N, cmsDIR_N}; if(cmsHomeMoveAll(DEV0, 2, nAxes, nDirList, cmsFALSE) != ERR_NONE){ // ì—러메시지 ì¶œë ¥ return ; } ///////////////////////////////////////////////////////////// // cmsHomeMoveAll() 함수 ëŒ€ì‹ ì•„ëž˜ì™€ ê°™ì´ cmsHomeMoveAllStart() 함 // 수를 ì‚¬ìš©í• ìˆ˜ 있습니다. // cmsHomeMoveAllStart(DEV0, 2, nAxes, nDirList, cmsFALSE); // cmsMxWaitDone(DEV0, 2, nAxes, cmsFALSE); } ------------------------------------------------------------------------------------- Visual Basic Const DEV0 = 0 ' 홈복귀를 위한 ê°€ìƒ í•¨ìˆ˜ë¥¼ 시작합니다. Private Sub OnStart() Dim AxisList(2) As Long Dim DirList(2) As Long AxisList(0) = 0 AxisList(1) = cmsY1 DirList(0) = cmsDIR_N DirList(1) = cmsDIR_N ' HomeSetConfig( 디바ì´ìŠ¤ ID, ëŒ€ìƒ ì¶•, 홈 복귀 모드, EZCount, EscDist, Offset ) Call HomeSetConfig(DEV0, AxisList(0), 0, 0, 1000, 0) Call HomeSetConfig(DEV0, AxisList(1), 0, 0, 1000, 0) ' HomeSetSpeedPattern 함수를 통해 ì›ì 복귀 ì†ë„를 ê²°ì •í•©ë‹ˆë‹¤. Call HomeSetSpeedPattern(DEV0, AxisList(0), cmsSMODE_S, 10000, 20000, 20000, 1000) Call HomeSetSpeedPattern(DEV0, AxisList(1), cmsSMODE_S, 10000, 20000, 20000, 1000) ' HomeMoveAll(ëŒ€ìƒ ì¶•, 홈 복귀 ë°©í–¥, 블ë¡í‚¹ 여부) Call HomeMoveAll(DEV0, 2,AxisList(0),DirList(0), cmsFALSE) End Sub ------------------------------------------------------------------------------------- Delphi procedure btnHomeMoveClick(); var arAxes : Array[0..1] of LongInt; arDirecton : Array[0..1] of LongInt; begin // cmsHomeSetConfig( 디바ì´ìŠ¤ ID, ëŒ€ìƒ ì¶•, 홈 복귀 모드, EZCount, EscDist, Offset ); // X1 축 ì— ëŒ€í•œ 홈 ì„¤ì •ì„ í•©ë‹ˆë‹¤. cmsHomeSetConfig(0, 0, 0, 0, 1000, 0 ); // Y1 ì¶•ì— ëŒ€í•œ 홈 ì„¤ì •ì„ í•©ë‹ˆë‹¤. cmsHomeSetConfig(0, cmsY1, 0, 0, 1000, 0 ); // X1 ì¶•ì˜ í™ˆ 복귀 ì†ë„를 ì„¤ì •í•©ë‹ˆë‹¤. cmsHomeSetSpeedPattern( 0, 0, cmsSMODE_S, 10000, 20000, 20000, 1000); // Y1 ì¶•ì˜ í™ˆ 복귀 ì†ë„를 ì„¤ì •í•©ë‹ˆë‹¤. cmsHomeSetSpeedPattern( 0, cmsY1, cmsSMODE_S, 10000, 20000, 20000, 1000); // ë‹¤ì¶•ì˜ í™ˆ ì´ì†¡ì„ 시작합니다. ê° ì¶•ì˜ í™ˆ 복귀 ë°©í–¥ì€ Negative ë¡œ ì„¤ì •í•©ë‹ˆë‹¤ arAxes[0] := 0; // X1 축 arAxes[1] := cmsY1; // Y1 축 arDirecton[0] := cmsDIR_N; arDirecton[1] := cmsDIR_N; // ì¸ìžëŠ” 다ìŒê³¼ 같습니다. // cmsHomeMoveAllStart( 디바ì´ìŠ¤ ID, 홈복귀 대ìƒì¶•, ì¶•ì˜ ë°°ì—´, ë°©í–¥ì˜ ë°°ì—´) // ì´ ëª…ë ¹ì€ í™ˆ 복귀 ëª…ë ¹ 실행시 바로 리턴ë©ë‹ˆë‹¤. cmsHomeMoveAllStart(0, 2, @arAxes, @arDirecton); // ë‘ ì¶•ì— ëŒ€í•´ì„œ 홈 복귀 완료시까지 대기합니다. cmsHomeWaitDone(0, 0, cmsFALSE); cmsHomeWaitDone(0, cmsY1, cmsFALSE); end; end. -------------------------------------------------------------------------------------